package main

import (
	"fmt"
	"math/rand"
	"math"
)

func max(a, b int) int {
	//return a > b ? a : b 没有这个运算符
	if(a > b) {
		return a
	}
	return b
}

func tostring(a, b int) (x, y string) {
	//命名返回值
	x = fmt.Sprintf("x = %d", a)
	y = fmt.Sprintf("y = %d", b)
	return
}

func Run1() {
	fmt.Println("Run1 --------------------------------")

	//伪随机数
	fmt.Println("Random number", rand.Intn(100), rand.Intn(100), rand.Intn(100))
	//返回第一个参数和第二个参数之间与第一个参数相邻的浮点数
	fmt.Printf("Nextafter number %g\n", math.Nextafter(2, 3))
	//首字母大写为public，小写为private
	fmt.Println("PI =", math.Pi)

	/* Go基本类型 Basic types
	bool
	string
	int  int8  int16  int32  int64
	uint uint8 uint16 uint32 uint64 uintptr
	byte // uint8 的别名
	rune // int32 的别名 // 代表一个Unicode码
	float32 float64
	complex64 complex128
	*/

	// 类型转换
	i := 42
	f := float64(i)
	u := uint(f)
	fmt.Println(i, f, u)

	// 类型推导
	i2 := 42           // int
	f2 := 3.142        // float64
	g2 := 0.867 + 0.5i // complex128
	fmt.Printf("%T %T %T\n", i2, f2, g2)

	// 常量 不能使用 := 语法定义
	const PI = 3.1415927
	// 数值常量 由上下文来决定其类型
	const Big   = 1 << 100
	const Small = Big >> 99
}
